import java.util.*;

public class MapDemo6 {
    public static void main(String[] args) {
        /*
        某个班级80名学生,现在需要组成秋游活动,
        班长提供了四个景点依次是(A、B、C、D),
        每个学生只能选择一个景点,请统计出最终哪个景点想去的人数最多。
         */

        //1.需要同学先投票

        //定义一个数组，储存4个景点
        String[] arr = {"A", "b", "C", "D"};
        //利用随机数模拟80个同学的投票，并把投票结果储存起来
        ArrayList<String> list = new ArrayList<>();
        Random r = new Random();
        for (int i = 0; i < 80; i++) {
            int index = r.nextInt(arr.length);
            list.add(arr[index]);
        }
        //2.如果添加的东西比较多，不方便使用计数器思想
        //定义Map集合
        HashMap<String, Integer> map = new HashMap<>();
        for (String s : list) {
            //判断当前景点在map中是否存在
            if (map.containsKey(s)) {
                //存在
                //先获取当前景点的投票次数
                int count = map.get(s);
                //表示当前景点又被投了一次
                count++;
                //再把新的次数再次添加到集合当中
                map.put(s, count);//覆盖原先的
            } else {
                //不存在
                map.put(s, 1);
            }
        }
        System.out.println(map);
        //求最大值
        int max = 0;
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        for (Map.Entry<String, Integer> entry : entries) {
            int count = entry.getValue();
            if (count > max) {
                max = count;
            }
        }
        System.out.println(max);

        //4.判断哪个景点跟最大值一样，如果一样，打印出来
        for (Map.Entry<String, Integer> entry : entries) {
            int count = entry.getValue();
            if (count == max) {
                System.out.println(entry.getKey());
            }
        }
    }
}
